package com.teacher.collections;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期的处理
 * <p>1、如何把Date格式化</p>
 * <p>2、如何把格式化的字符串变成Date</p>
 * <P>
 y 年
 M 月
 d 日
 h 时 在上午或下午 (1~12)
 H 时 在一天中 (0~23)
 m 分
 s 秒
 S 毫秒
 E 星期
 D 一年中的第几天
 F 一月中第几个星期几
 w 一年中第几个星期
 W 一月中第几个星期
 a 上午 / 下午 标记符
 k 时 在一天中 (1~24)
 K 时 在上午或下午 (0~11)
 z 时区
 * </P>
 */
public class DateUtil {
    private static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
    public static final long DAYTIMES = (24 * 60 * 60 * 1000);
    public static void main(String[] args) {
        long days = getDays("2014-11-21", "2018-02-07");
        System.out.println(days);
        System.out.println(addDays("2014-11-21", 1174));
    }
    /**
     * 传入两个Date的字符串"2018-11-12"，算一下两个Date之间的天数
     */
    public static long getDays(String a , String b) {
        long res = 0;
        try {
            Date date1=simpleDateFormat.parse(a);
            Date date2=simpleDateFormat.parse(b);
            long c= date1.getTime()-date2.getTime();
            long abs = Math.abs(c);
            res = abs / DAYTIMES;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return res;
    }
    /**
     *传入一个字符串"2018-11-12"，在这个字符串表示的日子上加上N天，返回另外一个字符串
     */
    public static String addDays(String source,int addDays) {
        long res = 0;
        String format = null;
        try {
            Date parse = simpleDateFormat.parse(source);
            res = parse.getTime() + addDays * DAYTIMES;
            format = simpleDateFormat.format(new Date(res));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return format;
    }
}
